package yf.mall.dao;

import com.yf.dao.BaseDao;
import yf.mall.entity.AccountRecordEntity;
import yf.mall.vo.AccountRecordVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * 账户记录Dao
 *
 * @author hxf
 * @email 505860922@qq.com
 * @date Mon Aug 26 17:57:16 CST 2019
 */
@Mapper
public interface AccountRecordDao extends BaseDao<AccountRecordEntity> {

    List<AccountRecordVo> queryListVo(AccountRecordVo params);

    AccountRecordVo getVo(Long id);

    List<AccountRecordVo> findByUserId(@Param("userId") Long userId, @Param("type") Integer type, @Param("status") Integer status,@Param("bus") Integer bus);

    //通过订单编号 删除代收款
    void deleteByInfo(String info);

    // 查询符合条件的订单记录
    List<AccountRecordVo> queryByToUserId(@Param("userId") Long userId, @Param("fromUserId") Long fromUserId, @Param("type") Integer type, @Param("status") Integer status, @Param("year") Integer year, @Param("month") Integer month, @Param("orderNo") String orderNo, @Param("busArr") Integer... bus);

    BigDecimal total(@Param("fromUserId")Long fromUserId,@Param("toUserId") Long toUserId, @Param("type") Integer type, @Param("status") Integer status,@Param("info") String info, @Param("bus") Integer bus);

    void deleteByOrderNo(@Param("orderNo") String orderNo, @Param("status") Integer recordStatus);



    List<AccountRecordEntity> findByOrderNos(@Param("info") String info, @Param("status") int status);

    List<AccountRecordEntity> findByOrderNoAndBusType(@Param("orderNo") String orderNo, @Param("busTypes") Integer ...busTypes);


    AccountRecordEntity findByOrderNo(String orderNo);

    List<AccountRecordEntity> findByToUserIdAndBus(@Param("userId") Long userId,@Param("bus") Integer bus);

    List<AccountRecordEntity> findByFromUserIdAndBus(@Param("userId") Long userId,@Param("bus") Integer bus);
    //待收款
    BigDecimal waitIncome(@Param("userId") Long userId,@Param("status") Integer status,@Param("type") Integer type,@Param("busTypes") Integer ...busTypes);

    BigDecimal totalByInfo(@Param("fromUserId")Long fromUserId, @Param("toUserId") Long toUserId,@Param("type") Integer type, @Param("status") Integer status, @Param("bus") Integer bus,@Param("info")String info);
}
